package com.simons.common.utils;

import org.apache.commons.lang3.StringUtils;

import com.simons.common.exception.CommonErrorType;
import com.simons.common.exception.CommonException;

import lombok.extern.log4j.Log4j2;

@Log4j2
public class EnumUtil {
	private EnumUtil(){
		//私有构造
	}

	public static <T> T parseEnum(String effectStatus, Class<T> clazz) {
		if(clazz == null || !clazz.isEnum() || StringUtils.isBlank(effectStatus)){
			return null;
		}
		
		T[] enums = clazz.getEnumConstants();
		for(T item : enums){
            Enum<?> tempEnum = (Enum<?>) item ;  
            if(effectStatus.equals(tempEnum.name())){
            	return item;
            }
		}
		
		log.info("枚举："+clazz.getName() + "转化不存在， 名称为："+effectStatus);
		return null;
	}
	
	public static <T> T parseEnumException(String effectStatus, Class<T> clazz) throws CommonException {
		if(clazz == null || !clazz.isEnum() || StringUtils.isBlank(effectStatus)){
			return null;
		}
		
		T[] enums = clazz.getEnumConstants();
		for(T item : enums){
            Enum<?> tempEnum = (Enum<?>) item ;  
            if(effectStatus.equals(tempEnum.name())){
            	return item;
            }
		}
		
		throw new CommonException(CommonErrorType.COMMON_DATA_NULL, "; 枚举："+clazz.getName() + "转化失败， 名称为："+effectStatus);
	}
	
}
